﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using Microsoft.Xna.Framework.Content;
using System.Collections;

namespace _2D
{
    public class Ranking
    {
        #region "Variables Privadas"

        private XmlDocument RankingXML;
        private Hashtable _AlmacenPuntos = new System.Collections.Hashtable();
        
        public Hashtable AlmacenPuntos
        {
            get
            {
                return _AlmacenPuntos;
            }
        }

        private struct InfoCampusero
        {
            public string NickCampusero;
            public string PuntuacionCampusero;
        }

        #endregion

        #region "Procedimiento LOADCONTENT"

        public void Load(ContentManager content, XmlDocument XML)
        {
            RankingXML = new XmlDocument();
            RankingXML = XML;
        }

        #endregion

        #region "Procedimiento LEERXMLRANKING"

        public void Leerxmlranking()
        {
            XmlNodeList Todolosnodos = RankingXML.GetElementsByTagName("Campusero");

            int IdCampusero = 0;
            InfoCampusero CampuseroStruct = new InfoCampusero();
            foreach (XmlElement nodo in Todolosnodos)
            {
                CampuseroStruct.NickCampusero = nodo.GetElementsByTagName("Nick")[0].InnerText;
                CampuseroStruct.PuntuacionCampusero = nodo.GetElementsByTagName("Puntos")[0].InnerText;

                // Si el ID no está vacío entonces es que hemos encontrado datos en el XML
                if (nodo.GetElementsByTagName("Id")[0].InnerText != String.Empty)
                {
                    IdCampusero = int.Parse(nodo.GetElementsByTagName("Id")[0].InnerText);
                    try
                    {
                        _AlmacenPuntos.Add(IdCampusero, CampuseroStruct);
                    }
                    catch (ArgumentException ae)
                    {
                        //Podriamos meter un log o algo por si hay excepción, pero por el momento no hacemos nada.
                    }
                }
            }
        }

        #endregion

        #region "Procedimiento NUEVONODOXMLRANKING"

        public void Nuevonodoxmlranking(string ArchivoXML, string Nick, string Id, string Puntos)
        {
            XmlNodeList Todolosnodos = RankingXML.GetElementsByTagName("Ranking"); // Obtenemos el nodo principal llamado Ranking.
            XmlNode Nodoprincipal = Todolosnodos[0];
            XmlNode Nodosecundario = RankingXML.CreateElement("Campusero"); // Vamos a crear un nuevo Nodo de tipo secundario.
            XmlElement AtributoNick = RankingXML.CreateElement("Nick"); // Crear un atributo para el Nick
            XmlElement AtributoId = RankingXML.CreateElement("Id"); // Crear un atributo para el Id
            XmlElement AtributoPuntos = RankingXML.CreateElement("Puntos"); // Crear un atributo para los Puntos
            AtributoNick.InnerText = Nick; // Contenido del atributo
            AtributoId.InnerText = Id; // Contenido del atributo
            AtributoPuntos.InnerText = Puntos; // Contenido del atributo
            Nodosecundario.AppendChild(AtributoNick); // Añadir los atributos al Nodo secundario
            Nodosecundario.AppendChild(AtributoId); // Añadir los atributos al Nodo secundario
            Nodosecundario.AppendChild(AtributoPuntos); // Añadir los atributos al Nodo secundario
            Nodoprincipal.AppendChild(Nodosecundario); // Añadimos el nodo secundario al nodo primario
            RankingXML.Save(ArchivoXML);
        }

        #endregion

    }
}